home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE03 / TIPTRIX / POPUPSU.PAS < prev   
Pascal/Delphi Source File  |  1995-07-18  |  2KB  |  87 lines

  1. unit Popupsu;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Menus, StdCtrls, ExtCtrls, Grids, Outline;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Panel1: TPanel;
  12.     Panel2: TPanel;
  13.     Panel3: TPanel;
  14.     Panel4: TPanel;
  15.     Panel5: TPanel;
  16.     Button1: TButton;
  17.     PopupMenu1: TPopupMenu;
  18.     DummyItem: TMenuItem;
  19.     Memo1: TMemo;
  20.     ListBox1: TListBox;
  21.     RadioButton1: TRadioButton;
  22.     Notebook1: TNotebook;
  23.     Outline1: TOutline;
  24.     N1: TMenuItem;
  25.     Menuitem1: TMenuItem;
  26.     Menuitem2: TMenuItem;
  27.     Menuitem3: TMenuItem;
  28.     EtcItem: TMenuItem;
  29.     procedure PopupMenu1Popup(Sender: TObject);
  30.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  31.       Shift: TShiftState);
  32.   private
  33.     { Private declarations }
  34.   public
  35.     { Public declarations }
  36.     function FindComponentAtCursor: TWinControl;
  37.   end;
  38.  
  39. var
  40.   Form1: TForm1;
  41.  
  42. implementation
  43.  
  44. {$R *.DFM}
  45.  
  46. function TForm1.FindComponentAtCursor: TWinControl;
  47. var
  48.   Pt: TPoint;
  49. begin
  50.   GetCursorPos(Pt);
  51.   Result := FindControl(WindowFromPoint(Pt));
  52. end;
  53.  
  54.  
  55. procedure TForm1.PopupMenu1Popup(Sender: TObject);
  56. begin
  57.   with PopupMenu1 do
  58.   begin
  59.     PopupComponent := FindComponentAtCursor;
  60.     { Write to the menu first, to make sure it is brought into life }
  61.     { If you do this last, the EnableMenuItem call will have had no }
  62.     { effect, since the menu won't actually exist }
  63.     if PopupComponent <> nil then
  64.       DummyItem.Caption := PopupComponent.Name + ': ' + PopupComponent.ClassName;
  65.     { No component of ours under cursor  so get rid of menu item ... }
  66.     DummyItem.Visible := PopupComponent <> nil;
  67.     { ... and seperator }
  68.     N1.Visible := PopupComponent <> nil;
  69.     { Disable the dummy menu item, but _don't_ grey it out }
  70.     { The Enabled property does grey the menu item when set to False }
  71.     EnableMenuItem(Handle, DummyItem.Command,
  72.       mf_ByCommand or mf_Disabled);
  73.   end;
  74. end;
  75.  
  76. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  77.   Shift: TShiftState);
  78. var
  79.   Pt: TPoint;
  80. begin
  81.   GetCursorPos(Pt);
  82.   if (ssAlt in Shift) and (Key = vk_F10) then
  83.     PopupMenu1.Popup(Pt.X, Pt.Y);
  84. end;
  85.  
  86. end.
  87.